package simplemaven2.vt;

import org.apache.log4j.Logger;
import ru.chezclif.lern.conread.Preconditions;
import simplemaven2.vt.data.Config;
import simplemaven2.vt.utils.BeanUtils;

import java.io.Serializable;


/**
 * Бин, отображающий загруженные данные из файла
 *
 * @author Vit
 */
public class PresentationRightBean implements Serializable {
    /**
     * Название загруженного файла с конфигами
     */
    private String fileName = "";
    /**
     * Проежуточный конфиг для манипуляций
     */
    private Config deltaConfig = null;
    /**
     * Стандартный логгер
     */
    private static final Logger logger = Logger.getLogger(PresentationRightBean.class);

    /**
     * Утвержденный конфиг сохранятеся в хранилище, промежуточный конфиг очищается
     */
    public void extractSettings() {
        MenuLeftBean menuLeftBean = (MenuLeftBean) BeanUtils.getBean("menuleftbean");
        Preconditions.notNull(menuLeftBean);
        menuLeftBean.getLocalConfigList().add(new Config(this.deltaConfig));
        this.clearSettings();
        this.goEmptyPage();
        logger.info("Settings extracted, going to the empty page");
    }

    /**
     * Промежуточный конфиг и переменные очищаются, откат на пустую страницу в правую сторону
     */
    public void cancelPresent() {
        this.clearSettings();
        this.goEmptyPage();
    }

    /**
     * Очистка переменных
     */
    public void clearSettings() {
        this.fileName = "";
        this.deltaConfig = null;
    }

    /**
     * Перенаправляет на пустую страницу
     */
    public void goEmptyPage() {
        LegalBean legalBean = (LegalBean) BeanUtils.getBean("legalbean");
        Preconditions.notNull(legalBean);
        legalBean.setNowUsedPage(0);
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        Preconditions.notNull(fileName);
        this.fileName = fileName;
    }

    public Config getDeltaConfig() {
        return deltaConfig;
    }

    public void setDeltaConfig(Config deltaConfig) {
        this.deltaConfig = deltaConfig;
    }
}
